web3.js@0.2x.x スマートコントラクトを初期化する
let contract = web3.eth.contract(CONTRACT_ABI).at(CONTRACT_ADDRESS)
ここで行うのはスマートコントラクト自体の初期化ではなく、web3 からスマートコントラクトにアクセスするためのオブジェクトの初期化を行います。
サンプルコード
code:example.js
// スマートコントラクトのアドレス
const CONTRACT_ADDRESS = '0x907fdf7f1b4416a524217173b5969d50d1507af4'
// スマートコントラクトのABI
const CONTRACT_ABI = [{"constant":true,"inputs":[],"name":"hello","outputs":{"name":"","type":"string"},"payable":false,"stateMutability":"pure","type":"function"}] // スマートコントラクトは、次のように初期化することができます。
let myContract = web3.eth.contract(CONTRACT_ABI)
let contractInstance = myContract.at(CONTRACT_ADDRESS)
// つぎのように一気に初期化することも可能です。
let contractInstance2 = web3.eth.contract(CONTRACT_ABI).at(CONTRACT_ADDRESS)
動作デモ
スマートコントラクト Hello.sol にアクセスするためのオブジェクトを初期化し、スマートコントラクトの hello() メソッドを実行します。 code:demo.js
// スマートコントラクトのアドレス
const CONTRACT_ADDRESS = '0x907fdf7f1b4416a524217173b5969d50d1507af4' // メインネットにデプロイ済み
// スマートコントラクトのABI
const CONTRACT_ABI = [{"constant":true,"inputs":[],"name":"hello","outputs":{"name":"","type":"string"},"payable":false,"stateMutability":"pure","type":"function"}] // web3の初期化
var web3js;
if (typeof web3 !== 'undefined') {
console.log("Use MetaMask")
web3js = new Web3(web3.currentProvider)
} else {
console.log("Use Infura")
}
// スマートコントラクトを初期化
let contract = web3js.eth.contract(CONTRACT_ABI).at(CONTRACT_ADDRESS)
// スマートコントラクトの hello メソッドを実行
contract.hello((error, result) => {
console.log(result);
alert(result);
})
関連